package JDK8时间Date类;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Instant时间戳 {
    public static void main(String[] args) {
        /*
            static Instant now() 获取当前时间的Instant对象(标准时间)
            static Instant ofXxxx(long epochMilli) 根据(秒/毫秒/纳秒)获取Instant对象
            ZonedDateTime atZone(ZoneIdzone) 指定时区
            boolean isxxx(Instant otherInstant) 判断系列的方法
            Instant minusXxx(long millisToSubtract) 减少时间系列的方法
            Instant plusXxx(long millisToSubtract) 增加时间系列的方法
        */
        //1.获取当前时间的Instant对象(标准时间：没有时区，中国的时间要加8小时)
        Instant now = Instant.now();
        System.out.println(now);


        // 2.根据(秒/毫秒/纳秒)获取Instant对象
        Instant instant1 = Instant.ofEpochMilli(0L);//输入毫秒
        System.out.println(instant1);
        Instant instant2 = Instant.ofEpochSecond(1L);//输入秒
        System.out.println(instant2);
        Instant instant3 = Instant.ofEpochSecond(1L, 1000000000L);//输入秒，纳秒
        System.out.println(instant3);


        //3. 指定时区
        Instant now1 = Instant.now();
        ZonedDateTime zonedDateTime = now1.atZone(ZoneId.of("Asia/Shanghai"));
        System.out.println(zonedDateTime);


        //4.isXxx 判断
        Instant instant5 = Instant.ofEpochMilli(0L);
        Instant instant4 = Instant.ofEpochMilli(1000L);
        //5.用于时间的判断
        //isBefore:判断调用者代表的时间是否在参数表示时间的前面
        //isAfter:判断调用者代表的时间是否在参数表示时间的后面
        boolean result1 = instant5.isBefore(instant4);
        boolean result2 = instant5.isAfter(instant4);
        System.out.println(result1);
        System.out.println(result2);


        // 6.Instant minusXxx(long millisToSubtract) 减少时间系列的方法
        Instant instant6 = Instant.ofEpochMilli(1000000L);
        System.out.println(instant6);
        Instant instant7 = instant6.minusSeconds(1);
        System.out.println(instant7);

        //Instant plusXxx(long millisToSubtract) 增加时间系列的方法
        Instant instant8 = instant6.plusSeconds(1);
        System.out.println(instant8);
    }
}
